package lock;

import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;

/*
ArrayList线程不安全演示
 */
public class ThreadDemo4 {

  public static void main(String[] args) {

//    循环30次，往list添加元素并取出
//    List<String> list = new ArrayList<>();

//    解决:1.使用Vector;2.使用Collections里的synchronizedList方法;3.使用CopyOnWriteArrayList解决，兼顾并发读，独立写操作
//    List<String> list = new Vector<>();
//    List<String> list = Collections.synchronizedList(new ArrayList<>());
    List<String> list = new CopyOnWriteArrayList<>();
    for (int i = 0; i < 30; i++) {
      new Thread(() -> {
        list.add(UUID.randomUUID().toString().substring(0,8));
        System.out.println(list);
      },String.valueOf(i)).start();
    }

  }
}
